分类中解决类别不平衡问题 - Microstrong的文章 - 知乎https://zhuanlan.zhihu.com/p/36381828
1.什么是类别不平衡问题
如果不同类别的训练样例数目稍有差别,通常影响不大,但若差别很大,则会对学习过程造成困扰。例如有998个反例,但是正例只有2个,那么学习方法只需要返回一个永远将新样本预测为反例的学习器,就能达到99.8%的精度;然而这样的学习器往往没有价值,因为它不能预测出任何正例。
类别不平衡(class-imbalance)就是指分类任务中不同类别的训练样例数目差别很大的情况。在现实的分类学习任务中,我们经常会遇到类别不平衡,例如在通过拆分法解决多分类问题时,即使原始问题中不同类别的训练样例数目相当,在使用OvR(一对其余,One vs. Rest,简称OvR)、MvM(多对多,Many vs. Many,简称MvM)策略后产生的二分类任务扔可能出现类别不平衡现象,因此有必要了解类别不平衡性处理的基本方法。
2.解决类别不平衡问题
2.1欠采样方法
(1)什么是欠采样方法
直接对训练集中多数类样本进行“欠采样”(undersampling),即去除一些多数类中的样本使得正例、反例数目接近,然后再进行学习。
(2)随机欠采样方法
随机欠采样顾名思义即从多数类中随机选择一些样样本组成样本集
。然后将样本集
从
中移除。新的数据集
。
缺点:
随机欠采样方法通过改变多数类样本比例以达到修改样本分布的目的,从而使样本分布较为均衡,但是这也存在一些问题。对于随机欠采样,由于采样的样本集合要少于原来的样本集合,因此会造成一些信息缺失,即将多数类样本删除有可能会导致分类器丢失有关多数类的重要信息。
为了克服随机欠采样方法导致的信息缺失问题,又要保证算法表现出较好的不均衡数据分类性能,出现了欠采样法代表性的算法EasyEnsemble和BalanceCascade算法。
(3)欠采样代表性算法-EasyEnsemble
算法步骤:
1)从多数类中有放回的随机采样n次,每次选取与少数类数目相近的样本个数,那么可以得到n个样本集合记作。
2)然后,将每一个多数类样本的子集与少数类样本合并并训练出一个模型,可以得到n个模型。
3)最终将这些模型组合形成一个集成学习系统,最终的模型结果是这n个模型的平均值。
![](https://i-blog.csdnimg.cn/blog_migrate/528df55141f4c736e5edb903f3e27aa7.png)
(4)欠采样代表性算法-BalanceCascade
BalanceCascade算法基于Adaboost,将Adaboost作为基分类器,其核心思路是:
1)在每一轮训练时都使用多数类与少数类数量相等的训练集,训练出一个Adaboost基分类器。
2)然后使用该分类器对全体多数类进行预测,通过控制分类阈值来控制假正例率(False Positive Rate),将所有判断正确的类删除。
3)最后,进入下一轮迭代中,继续降低多数类数量。
![](https://i-blog.csdnimg.cn/blog_migrate/a581b611e842403fbd1fec5355c7f670.jpeg)
扩展阅读: